package models

import (
	"gorm.io/gorm"
)

type User struct {
	UserId       uint    `gorm:"type:int;column:user_id;用户id;uniqueIndex" json:"user_id"`
	Nickname     string  `gorm:"type:varchar(50);column:nickname;comment:昵称;uniqueIndex" json:"nickname"`
	Username     string  `gorm:"type:varchar(30);column:username;comment:用户账号;uniqueIndex" json:"username"`
	Password     string  `gorm:"type:varchar(50);column:password;comment:用户密码" json:"password"`
	Mobile       *string `gorm:"type:varchar(11);column:mobile;comment:手机号;uniqueIndex" json:"mobile"`
	Email        *string `gorm:"type:varchar(50);column:email;comment:用户邮箱;uniqueIndex" json:"email"`
	UserBalance  float64 `gorm:"type:varchar(100);column:user_balance;comment:用户余额" json:"user_balance"`
	UserIntegral float64 `gorm:"type:varchar(100);column:user_integral;comment:用户积分" json:"user_integral"`
	UserAvatar   string  `gorm:"type:varchar(255);column:user_avatar;comment:用户头像" json:"user_avatar"`
	AuthStatus   string  `gorm:"type:enum('1','0');column:auth_status;comment:实名认证状态" json:"auth_status"`
	DaysCount    string  `gorm:"type:varchar(100);column:days_count;comment:注册天数" json:"days_count"`
	gorm.Model   `gorm:"embedded"`
}

type UserToKen struct {
	UserId             string `gorm:"type:int;column:user_id;用户id;uniqueIndex" json:"user_id"`
	UserToKenExpiresId string `json:"user_token_expires_id"`
	gorm.Model         `gorm:"embedded"`
}

// Role 角色模型
type Role struct {
	gorm.Model  `gorm:"embedded"`
	Name        string `gorm:"size:20;not null;uniqueIndex;comment:角色名称" json:"name"`
	Description string `gorm:"size:100;comment:角色描述" json:"description"`
	Users       uint   `gorm:"type:int;;comment:拥有该角色的用户" json:"user_id"`
	Permissions string `gorm:"size:20;comment:角色拥有的权限" json:"permissions"`
}

type UserAuth struct {
	UserId     string `gorm:"type:int;column:user_id;用户id;uniqueIndex" json:"user_id"`
	AutoData   string `json:"user_token_expires_id"`
	gorm.Model `gorm:"embedded"`
}

type PhotoHistory struct {
	UserId     string `gorm:"type:varchar(100);column:user_id;用户id" json:"user_id"`
	NewAvatar  string `gorm:"type:varchar(200);column:new_avatar;新头像" json:"new_avatar"`
	IsNew      string `gorm:"type:enum('1','0');column:is_new;是否是最新" json:"is_new"`
	gorm.Model `gorm:"embedded"`
}
